package futbol.tacticas.concursantes2007.AlfArgentin;

import futbol.tacticas.*;
import java.awt.*;
import java.awt.geom.*;


/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Licencia GPL</p>
 *
 * <p>Company: </p>
 * @author Alfredo Garcia Woods
 * @version 1.0
 */
public class Libero implements IJugador {


    double posicionFijaX;
    double posicionFijaY;

    final double rangoDemovimiento = 180;

    int yoJugador = 0;

    double minX;
    double maxX;
    double minY;
    double maxY;

    /**
     * Libero
     *
     * @param num int
     * @param posicionFijaX double
     * @param posicionFijaY double
     */
    public Libero(int num, double posicionFijaX, double posicionFijaY) {
        yoJugador = num;
        this.posicionFijaX = posicionFijaX;
        this.posicionFijaY = posicionFijaY;

        minX = posicionFijaX - rangoDemovimiento;
        maxX = posicionFijaX + rangoDemovimiento;
        minY = posicionFijaY - rangoDemovimiento;
        maxY = posicionFijaY + rangoDemovimiento;
    }


    /**
     * getjugador
     *
     * @return int
     */
    public int getjugador() {
        return yoJugador;
    }


    /**
     * getComandoMovimiento
     *
     * @param sj SituacionJugadores
     * @return Comando
     */
    public Comando getComandoMovimiento(SituacionJugadores sj) {
        Point bola = sj.getBola();
        Point jugadores[] = sj.getMisJugadores();
        Point contrarios[] = sj.getContrario();
        Point yoPoint = jugadores[yoJugador];

        // el libero corre rapido hacia la pelota si no est muy lejos
        double distanciaX = yoPoint.getX() - bola.getX();
        double distanciaY = yoPoint.getY() - bola.getY();

        //Movimiento  a la bola SI EST DENTRO DEL RANGO
        if (distanciaX < rangoDemovimiento && distanciaY < rangoDemovimiento) {
            return new ComandoIrA(yoJugador, bola.getX(), bola.getY());
        } else {
            return new ComandoIrA(yoJugador, posicionFijaX, posicionFijaY);
        }

    }

    /**
     * getComandoTiro
     *
     * @param sj SituacionJugadores
     * @return Comando
     */
    public Comando getComandoTiro(SituacionJugadores sj) {
        int arquero = 0;

        Point jugadores[] = sj.getMisJugadores();
        Point contrarios[] = sj.getContrario();
        Point miPosicion = jugadores[yoJugador];
        Point bola = sj.getBola();

        if (bola.getX() > 40) {
            return new ComandoTiroAPuerta(yoJugador, 20);

        } else {

            if (miPosicion.getY() < 0) {
                return new ComandoGolpearBola(yoJugador, 165, -20);

            } else {
                return new ComandoGolpearBola(yoJugador, 165, 20);

            }

        }
    }
}
